Predavanje 1
Amer Hasanović
Kontakt:
amer.hasanovic@fet.baPredmetni asistenti:
Po završetku kursa, studenti će:
Preduslovi za slušanje predmeta su ostvareni ECTS krediti iz predmeta:
Objektno orijentirano programiranje:
C++Osnove
STL (Standard Template Library)
Generičke funkcije
Za praćenje predavanje preporučuju se:
Obzirom na karakter predmeta, studenti trebaju imati pristup računaru
sa Linux operativnim sistemom i Docker-om.
Od studenata se očekuje da rade uporedo sa predavanjima.
Na osnovu predavanja i vježbi kreirat će se zadaće:
Ukupna ocjena iz predmeta će se formulisati na osnovu bodova iz provjere zadaća, bodova iz testova i završnog ispita.
Udio u ukupnoj ocjeni:
| Bodovi | Ocjena |
|---|---|
| 50 - 64 | 6 |
| 65 - 74 | 7 |
| 75 - 84 | 8 |
| 85 - 94 | 9 |
| 95 - 100 | 10 |
Računar – Uređaj koji se sastoji od više komponenti od kojih su ključne CPU i RAM.
CPU (Central Processing Unit) ili Procesor – Digitalna komponenta računara koja u diskretnoj jedinici vremena može izvršiti instrukciju.
i, ili itd)
RAM (Random Access Memory) – Digitalna komponenta računara koja služi za privremenu pohranu binarno formatiranih podatak.
RAM obezbijeđuje instrukcije za CPU, kao i podatke nad
kojim operiraju instrukcije.Program – Proizvoljno duga sekvenca instrukcija.
Programiranje – Proces kreiranja programa.
Izršavanje programa – Procedura koja uključuje
unošenje programa u RAM i izvršavnje instrukcija iz
programa na CPU-u (jedna po jedna u sekvenci), počevši od
neke zadane prve instrukcije iz sekvence.
Programski jezik – Skup gramatičkih pravila koja omogućavaju pisanja programa u tekstualnoj formi sa vrlo ograničenim rječnikom Engleskog jezika.
Kompajler – je program koji prevodi tekstualne programe u formi izjava nekog programskog jezika u mašinac.
C, Fortran
itd.C++,
Java, C#, Ruby,
Python itd.Haskell,
Purescript, Idris, Elm,
Coq, Agda itd.Objektno orijentirani programski jezici, između ostalog, definiraju i izjave za kreiranje i manipulaciju nad objektima.
Objekat je koncept koji objedinjuje stanja (podatake) i ponašanja (funkcije koje manipuliraju nad stanjem).
OOP program kreira kolekciju (skupinu) objekata koji međusobnom interakcijom (komunikacijom) rješavaju konkretni problem.
Objektno orijentirani programski jezici, između ostalog, definiraju i izjave za kreiranje klasa.
Klasa je specifikacija (ili kalup) na osnovu koje se može napraviti proizvoljan broj objekata sa istim osobinama (stanja i ponašanja).
C++ osnoveC++ kod se organizira isto kao C kod u
formi izjava koje završavaju sa karakterom ;.
Tekst nakon // do kraja trenutne linije teksta
predstavlja komentar i ignoriše se prilikom kompajliranja.
C++ kompajler u izjavama prepoznaje vrijednosti
(literals) i utvrđuje njihov tip.
Svi tipovi iz C specifikacije postoje u
C++-u i predstavljaju C++ primitivne
tipove, npr:
| Tip | Formiranje vrijednosti | Primjer | Kodiranje |
|---|---|---|---|
char |
slovo između navodnika ' |
'a' |
8 b |
int |
cijeli broj | 24 |
32 b |
double |
realni broj | 0.5 |
64 b |
niz char |
slova između navodnika " |
"a" |
(n+1)⋅8 b |
bool |
vrijednost true ili false |
true |
obično 8 b |
Izrazi su izjave koje kada se izvrše u toku izvršenja programa, proizvode vrijednost.
Izrazi se obično formiraju putem operatora (algebarski, logički itd.) u kojim učestvuju vrijednosti ili drugi izrazi.
C++ vrši promociju tipova vrijednosti u izrazima isto
kao i C.
Isto kao u C-u, u izrazima moguće je koristiti i
alternativne načine za specifikacije vrijednosti. Npr. u slijedećim
linijama nalazi se ista vrijednost tipa int:
Memorija je kontinualna sekvenca memorijskih ćelija (obično od po
8b), u koju se kodiranjem na binarni nivo mogu smjestiti vrijednosti
bilo kojeg C++ tipa.
Za komunikaciju sa memorijom C++ koristi
varijable.
Varijabla je imenovani region memorije koji nam dodjeljuje sistem kada se u programu izvrše izjave koje predstavljaju definiciju varijable.
Osnovni format za definiranje varijable:
Definicija varijable spada u izjave koje se označavaju kao deklaracije.
Količina memorije koja je dodjeljena definicijom varijable ovisi od specificranog tipa varijable.
Tip varijable diktira i tipove vrijednosti koje se mogu pohraniti u region memorije kojeg kontroliše varijabla.
Jednom definirana varijabla omogućava operacije:
=.
= ne odgovara
tipu vrijednosti koji proizvodi izraz na desnoj strani operatora
=, tada mora biti definirana konverzija,
tzv cast operacija, iz tipa izraza u tip
varijable.C++ dopušta definiciju varijable bilo gdje unutar
koda.
Inicijalizacija varijable predstavlja postavljanje inicijalne vrijednosti u region memorije koji kontroliše varijabla.
=, () ili {}, u
kombinaciji sa jednim izrazom koji proizvodi vrijednost
kompatibilnog tipa sa tipom varijable.Ukoliko se prilikom definiranja varijable, a prije tipa varijable,
upiše ključna riječ const, varijabla je
deklarirana kao konstanta i obavezno se mora
inicijalizirati.
autoKompajler prilikom definiranja varijable može zaključiti tip varijable, i to na osnovu tipa vrijednosti kojim se varijabla inicijalizira prilikom definicije.
Za ovaj slučaj, umjesto tipa varijable, stavlja se ključna riječ
auto na mjestu tipa varijable, a varijabla će dalje u kodu
imati onaj tip koji zaključi kompajler:
Sekvence C++ izjava se grupišu u blokove
koda ograničenim vitičastim zagradama {}.
Varijabla definirana unutar nekog bloka, naziva se lokalna varijabla:
Varijable definirane van svih blokova, nazivaju se globalne varijable:
Lokalne varijable vidiljive se samo unutar opsega u kojem su definirane, uključujući eventualno ugnježdene blokove u tom opsegu, i to od mjesta definicije do kraja opsega.
Globalne varijable vidljive su bilo gdje u kodu i to nakon što kompajler vidi njihovu definiciju.
static varijableUkoliko ispred tipa lokalne varijable stoji ključna riječ
static:
static varijableUkoliko ispred tipa globalne varijable stoji ključna riječ
static:
Unutar jednog opsega, lokalnog ili globalnog, nije dozvoljeno definiranje varijable sa istim imenom koji ima varijable već prethodno definirana u tom opsegu.
Da bi izvršili kompajliranje C++ koda do rezultujućeg
programa u mašincu, mora biti definirana prva instrukcija u programu,
tzv entry point.
u to svrhu, kao i u C-u, potrebno je definirati
funkciju main,
prva izvjava u funkciji main predstavlja
entry point programa.
main nije c++ ključna riječ, očekuje je
sistem za kompajliranje (tj linker).
Ukoliko main nije definiran, nije moguće proizvesti
program, tj izvršnu datoteku kojom se može pokrenuti izvođenje
programa.
Izvršenje programa počinje izvršenjem prve izjave unutar bloka
funkcije main, a završava izvršenjem zadnje izjave unutar
tog bloka.
Kompajliranje je moguće izvršiti putem komandne linije sa
programima g++ ili clang++.
Kompajlirani program se pokreće putem komandne linije u folderu gdje je izvršeno kompajliranje.